
print('-'*20)
# 引用之可变类型
a = [1,2,3,[4,5]]
b = a
print(a)
print(b)

# 改变a的值,b的值也跟着改变，因为a和b指向同一个对象，可以理解为在对象里贴了2个便利贴：a 和 b
a.append(6)
print(a)
print(b)

# 浅度拷贝，即改变a的值，不影响b.
b = a.copy()
a.append(7)
print(a)
print(b)
# 但还是会影响到里面的嵌套列表
a[3].append(666)
print(a)
print(b)

# 深度拷贝，即改变a的值后，完全不影响到b
import copy
b = copy.deepcopy(a)
a[3].append(777)
print(a)
print(b)

print('-'*20)

# 引用之不可变类型
c = (1,2,3)
d = c
print(c)
print(d)
c = (4,5,6)
print(c)
print(d) # d并没有跟着c的改变而改变

# # 交换两个变量的值
# a = 10
# b = 20
# a,b = b,a
# print(a)
# print(b)

# 把引用当做函数的实参传入
def  test1(a):
    print(a)
    print(id(a))
    a = 200
    print(a)
    print(id(a))

a = 100
test1(100)

print('-'*20)

# if判断
# 需求，输入1 下雨，输入0不下雨
user = input('上帝：')
user = int(user)
if user == 1:
    print('今天会下雨，待在家里吧')
elif user == 0:
    print('今天不会下雨，出门耍吧~')
else:
    print('输入错误，请输入数字1或0')

# 错误与异常（bug）处理
"""
try:
    执行代码
except:
    异常时执行的代码
"""
while True:
    try:
        x = int(input('请输入一个数字：'))
        break
    except:
        print('error')
"""
try:
    执行代码
except:
    异常时执行的代码
else:
    没有异常时执行的代码
"""
filepaths = ['news.txt', '虚构一个不存在的文件.txt']
for f in filepaths:
    try:
        f = open(f, 'r', encoding='utf-8')
    except:
        print(f'{f} 文件不存在！')
    else:
        res = f.read()
        print(f'文件内容：{res}')

"""
try:
    执行代码
except:
    异常时执行的代码
else:
    没有异常时执行的代码
finally:
    有无异常都会执行的代码
"""

# 小实战：词频统计器。
def names():
    pass
    pass
